// import pathToRegexp from 'path-to-regexp';
import { queryData } from './service';

const Model = {
  namespace: 'dvaDemo',

  state: {
    data: [],
  },

  // effects
  // 处理异步操作（与服务期交互）和业务逻辑。
  // 格式：*(action,effects)=>void
  effects: {
    *getData({ payload }, { call, put, select }) {
      const res = yield call(queryData);
      yield put({ type: 'saveData', payload: res });
      return res; // dispatch().then(data=>{}).catch(err=>{})
    },
  },

  // reducers
  // 处理同步操作，可以修改state。
  // 格式：(state,action)=>newState
  reducers: {
    saveData(state, { payload }) {
      return {
        ...state,
        data: payload,
      };
    },
  },

  // subscriptions
  // 用于监听数据源的变化，以使用dispatch触发相应的action。
  // 数据源可以是路由、websocket变化、keyboard输入、geo变化、当前时间等等。
  // 格式：({dispatch,history})=>Func
  subscriptions: {
    setup({ dispatch, history }) {
      history.listen(({ pathname, search }) => {
        if (pathname === '/dva-demo') {
          dispatch({ type: 'getData', payload: '' });
        }

        // const regexp = pathToRegexp('/interface/detail/:id').exec(pathname);
        // if (regexp) {
        //   const id = regexp[1];
        //   dispatch({ type: 'getCurInterfaceData', payload: id });
        // }
      });
    },
  },
};
export default Model;
